From 48d064dd68b5a31b42e8fa4868bd1653186ff3e7 Mon Sep 17 00:00:00 2001 From: Jimi Xenidis Date: Wed, 4 Oct 2006 14:06:14 -0400 Subject: [PATCH] [XEN][POWERPC] Keepin it cool: sleep the processor when halt fails Signed-off-by: Jimi Xenidis Signed-off-by: Hollis Blanchard --HG-- extra : transplant_source : p%1Ch%92%1F%F3%23p%CA%EA%AA%C1z%5E%0A%25%EB%C8%A8%3A --- xen/arch/powerpc/domain.c | 6 +++--- xen/arch/powerpc/exceptions.h | 3 +++ xen/arch/powerpc/setup.c | 2 -- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/xen/arch/powerpc/domain.c b/xen/arch/powerpc/domain.c index 83a649c4d6..7d69f72fe9 100644 --- a/xen/arch/powerpc/domain.c +++ b/xen/arch/powerpc/domain.c @@ -34,6 +34,7 @@ #include #include #include "rtas.h" +#include "exceptions.h" #define next_arg(fmt, args) ({ \ unsigned long __arg; \ @@ -47,7 +48,6 @@ } \ __arg; \ }) -extern void idle_loop(void); unsigned long hypercall_create_continuation(unsigned int op, const char *format, ...) @@ -99,7 +99,8 @@ void arch_domain_destroy(struct domain *d) static void machine_fail(const char *s) { printf("%s failed, manual powercycle required!\n", s); - while(1); + for (;;) + sleep(); } void machine_halt(void) @@ -302,7 +303,6 @@ void arch_dump_vcpu_info(struct vcpu *v) { } -extern void sleep(void); static void safe_halt(void) { int cpu = smp_processor_id(); diff --git a/xen/arch/powerpc/exceptions.h b/xen/arch/powerpc/exceptions.h index 8320f4f19b..0ec2e76ec0 100644 --- a/xen/arch/powerpc/exceptions.h +++ b/xen/arch/powerpc/exceptions.h @@ -43,8 +43,11 @@ extern void program_exception( struct cpu_user_regs *regs, unsigned long cookie); extern long xen_hvcall_jump(struct cpu_user_regs *regs, ulong address); + extern void *mambo_memset(void *, int, ulong); extern void *mambo_memcpy(void *, const void *, ulong); +extern void sleep(void); +extern void idle_loop(void); extern ulong *__hypercall_table[]; diff --git a/xen/arch/powerpc/setup.c b/xen/arch/powerpc/setup.c index bfa59ca481..31f7a7d694 100644 --- a/xen/arch/powerpc/setup.c +++ b/xen/arch/powerpc/setup.c @@ -196,8 +196,6 @@ static void __init start_of_day(void) schedulers_start(); } -extern void idle_loop(void); - void startup_cpu_idle_loop(void) { struct vcpu *v = current; -- 2.30.2